﻿using System;
using System.Collections.Generic;
using Telerik.Sitefinity.Social.Enumerations;

namespace Telerik.Sitefinity.Social.Contracts
{
    /// <summary>
    /// Mandates the members of any class that wishes to act as Profile
    /// </summary>
    public interface IProfile
    {
        /// <summary>
        /// Gets or sets the gender.
        /// </summary>
        /// <value>The gender.</value>
        Gender Gender { get; set; }

        /// <summary>
        /// Gets or sets the birthday.
        /// </summary>
        /// <value>The birthday.</value>
        DateTime Birthday { get; set; }

        /// <summary>
        /// Gets or sets the hometown.
        /// </summary>
        /// <value>The hometown.</value>
        string Hometown { get; set; }

        /// <summary>
        /// Gets or sets the home neighbourhood.
        /// </summary>
        /// <value>The home neighbourhood.</value>
        string HomeNeighbourhood { get; set; }

        /// <summary>
        /// Gets or sets the type of the relationship.
        /// </summary>
        /// <value>The type of the relationship.</value>
        Relationship RelationshipType { get; set; }

        /// <summary>
        /// Gets or sets the interested in.
        /// </summary>
        /// <value>The interested in.</value>
        Gender InterestedIn { get; set; }

        /// <summary>
        /// Gets or sets the political views.
        /// </summary>
        /// <value>The political views.</value>
        string PoliticalViews { get; set; }

        /// <summary>
        /// Gets or sets the religious views.
        /// </summary>
        /// <value>The religious views.</value>
        string ReligiousViews { get; set; }

        /// <summary>
        /// Gets or sets the activities.
        /// </summary>
        /// <value>The activities.</value>
        string Activities { get; set; }

        /// <summary>
        /// Gets or sets the interests.
        /// </summary>
        /// <value>The interests.</value>
        string Interests { get; set; }

        /// <summary>
        /// Gets or sets the favourite music.
        /// </summary>
        /// <value>The favourite music.</value>
        string FavouriteMusic { get; set; }

        /// <summary>
        /// Gets or sets the favourite tv shows.
        /// </summary>
        /// <value>The favourite tv shows.</value>
        string FavouriteTvShows { get; set; }

        /// <summary>
        /// Gets or sets the favourite movies.
        /// </summary>
        /// <value>The favourite movies.</value>
        string FavouriteMovies { get; set; }

        /// <summary>
        /// Gets or sets the favourite books.
        /// </summary>
        /// <value>The favourite books.</value>
        string FavouriteBooks { get; set; }

        /// <summary>
        /// Gets or sets the favourite quotations.
        /// </summary>
        /// <value>The favourite quotations.</value>
        string FavouriteQuotations { get; set; }

        /// <summary>
        /// Gets or sets the about me.
        /// </summary>
        /// <value>The about me.</value>
        string AboutMe { get; set; }

        /// <summary>
        /// Gets the emails.
        /// </summary>
        /// <value>The emails.</value>
        IList<string> Emails { get; }

        /// <summary>
        /// Gets the IM accounts.
        /// </summary>
        /// <value>The IM accounts.</value>
        IDictionary<string, IMClients> IMAccounts { get; }

        /// <summary>
        /// Gets or sets the mobile phone.
        /// </summary>
        /// <value>The mobile phone.</value>
        string MobilePhone { get; set; }

        /// <summary>
        /// Gets or sets the land phone.
        /// </summary>
        /// <value>The land phone.</value>
        string LandPhone { get; set; }

        /// <summary>
        /// Gets or sets the address.
        /// </summary>
        /// <value>The address.</value>
        string Address { get; set; }

        /// <summary>
        /// Gets or sets the city town.
        /// </summary>
        /// <value>The city town.</value>
        string CityTown { get; set; }

        /// <summary>
        /// Gets or sets the neighbourhood.
        /// </summary>
        /// <value>The neighbourhood.</value>
        string Neighbourhood { get; set; }

        /// <summary>
        /// Gets or sets the zip.
        /// </summary>
        /// <value>The zip.</value>
        string Zip { get; set; }

        /// <summary>
        /// Gets or sets the website.
        /// </summary>
        /// <value>The website.</value>
        string Website { get; set; }

        /// <summary>
        /// Gets or sets the college university.
        /// </summary>
        /// <value>The college university.</value>
        string CollegeUniversity { get; set; }

        /// <summary>
        /// Gets or sets the class year.
        /// </summary>
        /// <value>The class year.</value>
        int ClassYear { get; set; }

        /// <summary>
        /// Gets or sets the college concentration.
        /// </summary>
        /// <value>The college concentration.</value>
        string CollegeConcentration { get; set; }

        /// <summary>
        /// Gets or sets the high school.
        /// </summary>
        /// <value>The high school.</value>
        string HighSchool { get; set; }

        /// <summary>
        /// Gets or sets the high school class year.
        /// </summary>
        /// <value>The high school class year.</value>
        string HighSchoolClassYear { get; set; }

        /// <summary>
        /// Gets or sets the job employer.
        /// </summary>
        /// <value>The job employer.</value>
        string JobEmployer { get; set; }

        /// <summary>
        /// Gets or sets the job position.
        /// </summary>
        /// <value>The job position.</value>
        string JobPosition { get; set; }

        /// <summary>
        /// Gets or sets the job description.
        /// </summary>
        /// <value>The job description.</value>
        string JobDescription { get; set; }

        /// <summary>
        /// Gets or sets the job city town.
        /// </summary>
        /// <value>The job city town.</value>
        string JobCityTown { get; set; }
    }
}
